Following up on the ablation study presented in a previous
post, I
worked on integrating additional parts of the JPEG XL algorithm in cujpegxl,
especially around entropy coding. This post presents an outline of the changes,
and shows the improvements in BD-rate and runtime speed.
[Read More]
A small libjxl ablation study
Finding out what makes a JPEG XL encoder good
Despite it being a very busy period, lately I have been spending a bit of background time thinking about how to improve cujpegxl, the GPU-accelerated JPEG XL encoder I described in a previous post. My next planned step involves three phases: a runtime optimization of the current version, followed by...
[Read More]
Implementing a GPU-accelerated JPEG XL encoder
As a fully AI-driven project
Some time ago I encountered a situation at work where I needed high-resolution real-time image encoding on a constrained device. My first suggestion was to use a temporal video codec (like H.264), but the customer wanted to be able to encode and decode still images independently. Since the platform had...
[Read More]
From 23-year-old scrap PCB to working webcam module
Digital archaeology or new project material?
Lately I have been thinking about getting a low-resolution image sensor for some bare-metal project prototyping, and I was disappointed by the limited availability of low-cost low-resolution camera modules. I wanted parts in the price range of a few bucks, not a few dozen bucks. I then remembered of a...
[Read More]
AI-driven C++ runtime optimization
Case study of LLM-driven optimization in the wild
A few weeks ago I wrote a lengthy post about making a real-world algorithm run twenty times faster. There I talked about a work package performed several years ago, well before LLMs were any useful as coding assistance tools. While writing I started asking myself: what if, instead of being...
[Read More]
Diagnosing a compiler bug
When you have eliminated the impossible...
This post is about a software issue I troubleshot some time ago. What made it
interesting is how it turned out not to be a bug in the product, but rather in
the C++ compiler used to generate the binary.
[Read More]
Making a real-world algorithm run twenty times faster
A showcase of optimisation techniques from the trenches
This post is a summary of an interesting code optimisation task I performed for a customer some time back. They had developed an algorithm for a product but they were way over budget on runtime, and due to the embedded and real-time nature of their product, not meeting the runtime...
[Read More]
Designing a least squares fit confidence estimate
But making it run very fast
While working on a project some time back, a friend asked me how to develop an effective confidence estimate for a model fitting problem such that it could run very fast in real time on a constrained system. While the question might sound mundane, I found the specific constraints called...
[Read More]
How I de-googled my personal devices
Switching out of Google products and services has been easier than expected
This post is a recap of my experience migrating to a Google-free environment. This transition is part of a broader change of habits I made in recent times. It is not just a matter of putting more focus on privacy, but also of escaping enshittified products, and creating some distance...
[Read More]
New timeline Jekyll plugin
With a pure CSS solution
This is a meta-post about some updates I have been developing for the website.
I decided to reorganize some of the content and provide information in a way
that is easier to navigate.
[Read More]